package com.zhongwang.business.module.system.dept;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 
 *
 * @author China.sgl
 * @date 2020/7/30 16:04
 */
public interface DeptMapper {

    /**
     * 按 部门名称 查询部门
     *
     * @param name 部门名称
     * @return 部门
     */
    Dept findByName(String name);

    /**
     * 按条件查询部门
     *
     * @param dept 部门条件
     * @return List
     */
    List<Dept> findByCondition(Dept dept);

    /**
     * 按 id 修改状态
     *
     * @param id id
     * @param status 状态
     * @return 影响行数
     */
    int updateStatusByIdWithRecursion(@Param("id") Integer id, @Param("status") int status);

    /**
     * 按 用户 ID查询
     *
     * @param id 用户ID
     * @return Dept
     */
    Dept findByUserId(Integer id);

    /** 查询管理部门数量 */
    Integer countDeptByUserId(Integer userId);

    /** 查询顶级部门 */
    Integer findTopLevelDept(Integer deptId);

    /** 查询所有顶级部门 */
    List<Dept> findAllTopLevelDept();
}